package com.huishu.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.huishu.commons.pojo.Result;
import com.huishu.commons.pojo.dto.AddIntegrationDTO;
import com.huishu.commons.pojo.model.UserDO;
import com.huishu.commons.pojo.vo.UserMemberVO;
import com.huishu.user.pojo.dto.UserDTO;
import com.huishu.user.pojo.dto.UserPageListDTO;
import com.huishu.user.pojo.dto.UserRegisterOrLoginDTO;
import com.huishu.user.pojo.dto.WeChatLoginDTO;
import com.huishu.user.pojo.model.UserMemberDO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author generator@ljj
 * @since 2023-04-06
 */
public interface UserService extends IService<UserDO> {

    /**
     * 微信登入
     * @param weChatLogin
     * @return
     */
    UserDO weChatLogin(WeChatLoginDTO weChatLogin);

    /**
     * 验证码登入
     * @param registerOrLoginDTO
     */
    UserDO registerOrLogin(UserRegisterOrLoginDTO registerOrLoginDTO);

    /**
     * 添加积分
     * @param addIntegrationDTO
     * @return
     */
    Result addIntegration(AddIntegrationDTO addIntegrationDTO);

    /**
     * 获取用户会员信息
     * @param userIds
     * @return
     */
    Result<List<UserMemberVO>> findUserMember(List<Long> userIds);

    /**
     * 获取openId
     * @param code
     * @return
     */
    Result getOpenId(String code);

    /**
     * 修改
     * @param userDTO
     * @return
     */
    Result modify(UserDTO userDTO);

    /**
     * 修改头像
     * @param userDTO
     * @return
     */
    Result updateAvatar(UserDTO userDTO);

    /**
     * 分页查询
     * @param userPageListDTO
     * @return
     */
    Result pageList(UserPageListDTO userPageListDTO);

    /**
     * 导出
     * @param userPageListDTO
     * @param response
     */
    void export(UserPageListDTO userPageListDTO, HttpServletResponse response);

    /**
     * 根据手机号获取会员信息
     * @param phone
     */
    UserMemberDO getUserMemberInfo(String phone);

    /**
     * 同步数据
     * @return
     */
    Result synchronizationData();
}
